package projects.nerdybuzz.catchdrop; import projects.nerdybuzz.catchdrop.googleservices.IGoogleServices; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.loaders.FileHandleResolver; import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGeneratorLoader; import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader; import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.FreeTypeFontLoaderParameter; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; public class CDGame extends Game { //public static final String GAME_VERSION = "v0.4.3 (alpha)"; public static final String GAME_VERSION = "testing-alpha"; public int GAME_WIDTH = 800; public int GAME_HEIGHT = 480; //public int GAME_WIDTH = 1024; //public int GAME_HEIGHT = 768; protected SpriteBatch batch; protected ShapeRenderer shapeRender; protected BitmapFont font; protected OrthographicCamera camera; protected MainMenuScreen mMScr; protected GameScreen gScr; protected SettingsScreen gSettings; public boolean paused = false; public boolean autoPause = true; public String autoPauseStr; public int score = 0; public int zenScore = 0; public int zenTotal = 0; public int missedDrops = 0; public boolean showMissedDrops = false; public long highScore; public long zenHighScore; public boolean showZenScores = false; public FreeTypeFontGenerator generator; public FreeTypeFontParameter parameter; public AssetManager assManager; public String callToAction = "Touch or Click"; public Preferences gamePrefs; public boolean usingDesktop; public boolean noDrag; public String dragStr; public String gameModeStr; public int timerTime; public boolean spawnDrops = true; public boolean initedSettings = false; public CharSequence classicText = "Classic"; public CharSequence zenText = "Zen"; public String deviceModel = "default"; public static IGoogleServices googleServices; public CDGame(IGoogleServices googleServices) { CDGame.googleServices = googleServices; this.callToAction = "Touch or Click"; this.usingDesktop = true; this.noDrag = true; } public CDGame(IGoogleServices googleServices, String callToAction) { CDGame.googleServices = googleServices; this.callToAction = callToAction; this.usingDesktop = true; this.noDrag = true; } public CDGame(IGoogleServices googleServices, String callToAction, boolean desktop) { CDGame.googleServices = googleServices; this.callToAction = callToAction; this.usingDesktop = desktop; this.noDrag = desktop; } public CDGame(IGoogleServices googleServices, int gwidth, int gheight) { CDGame.googleServices = googleServices; this.callToAction = "Touch or Click"; this.usingDesktop = true; this.noDrag = true; this.GAME_WIDTH = gwidth; this.GAME_HEIGHT = gheight; } public CDGame(IGoogleServices googleServices, String callToAction, int gwidth, int gheight) { CDGame.googleServices = googleServices; this.callToAction = callToAction; this.usingDesktop = true; this.noDrag = true; this.GAME_WIDTH = gwidth; this.GAME_HEIGHT = gheight; } public CDGame(IGoogleServices googleServices, String callToAction, boolean desktop, int gwidth, int gheight) { CDGame.googleServices = googleServices; this.callToAction = callToAction; this.usingDesktop = desktop; this.noDrag = desktop; this.GAME_WIDTH = gwidth; this.GAME_HEIGHT = gheight; } public CDGame(IGoogleServices googleServices, String callToAction, boolean desktop, int gwidth, int gheight, String deviceModel) { CDGame.googleServices = googleServices; this.callToAction = callToAction; this.usingDesktop = desktop; this.noDrag = desktop; this.GAME_WIDTH = gwidth; this.GAME_HEIGHT = gheight; this.deviceModel = deviceModel; } public void create() { assManager = new AssetManager(); // I manage dat ass... FileHandleResolver resolver = new InternalFileHandleResolver(); assManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver)); assManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver)); FreeTypeFontLoaderParameter titleParams = new FreeTypeFontLoaderParameter(); titleParams.fontFileName = "font/atari.ttf"; titleParams.fontParameters.size = 75; assManager.load("title.ttf", BitmapFont.class, titleParams); FreeTypeFontLoaderParameter promptParams = new FreeTypeFontLoaderParameter(); promptParams.fontFileName = "font/MyriadPro-Regular.otf"; promptParams.fontParameters.size = 35; assManager.load("prompt.ttf", BitmapFont.class, promptParams); FreeTypeFontLoaderParameter promptBoldParams = new FreeTypeFontLoaderParameter(); promptBoldParams.fontFileName = "font/MyriadPro-Bold.otf"; promptBoldParams.fontParameters.size = 35; assManager.load("prompt_bold.ttf", BitmapFont.class, promptBoldParams); FreeTypeFontLoaderParameter scoreParams1 = new FreeTypeFontLoaderParameter(); scoreParams1.fontFileName = "font/atari.ttf"; scoreParams1.fontParameters.size = 20; assManager.load("score.ttf", BitmapFont.class, scoreParams1); FreeTypeFontLoaderParameter timerParams = new FreeTypeFontLoaderParameter(); timerParams.fontFileName = "font/atari.ttf"; timerParams.fontParameters.size = 25; assManager.load("timer.ttf", BitmapFont.class, timerParams); FreeTypeFontLoaderParameter goverParams = new FreeTypeFontLoaderParameter(); goverParams.fontFileName = "font/MyriadPro-Bold.otf"; goverParams.fontParameters.size = 95; assManager.load("gover.ttf", BitmapFont.class, goverParams); FreeTypeFontLoaderParameter versionParams = new FreeTypeFontLoaderParameter(); versionParams.fontFileName = "font/prstartk.ttf"; versionParams.fontParameters.size = 15; assManager.load("corner.ttf", BitmapFont.class, versionParams); FreeTypeFontLoaderParameter menuFontParams = new FreeTypeFontLoaderParameter(); menuFontParams.fontFileName = "font/MyriadPro-Bold.otf"; menuFontParams.fontParameters.size = 25; assManager.load("size20.ttf", BitmapFont.class, menuFontParams); FreeTypeFontLoaderParameter headerParams = new FreeTypeFontLoaderParameter(); headerParams.fontFileName = "font/arial.ttf"; headerParams.fontParameters.size = 50; assManager.load("heading.ttf", BitmapFont.class, headerParams); if(usingDesktop) autoPause = false; gamePrefs = Gdx.app.getPreferences("Game"); //gamePrefs.getLong("highscore", 0); batch = new SpriteBatch(); shapeRender = new ShapeRenderer(); camera = new OrthographicCamera(); camera.setToOrtho(false, GAME_WIDTH, GAME_HEIGHT); camera.viewportWidth = GAME_WIDTH; camera.viewportHeight = GAME_HEIGHT; mMScr = new MainMenuScreen(this); //gScr = new GameScreen(this); //gScr = new ZenGame(this); //gSettings = new SettingsScreen(this); this.setScreen(mMScr); } @Override public void render() { if(autoPause) autoPauseStr = "ON"; else autoPauseStr = "OFF"; if(noDrag) dragStr = "OFF"; else dragStr = "ON"; if(autoPause) noDrag = false; if(gScr instanceof ClassicGame) { gameModeStr = "Classic"; } else if(gScr instanceof ZenGame) { gameModeStr = "Zen"; } else { gameModeStr = "Classic?"; } if(assManager.update() && assManager.isLoaded("title.ttf")) { super.render(); } } @Override public void pause() { if(this.getScreen() == gScr) { System.out.println("Paused."); paused = true; } } @Override public void resume() { //System.out.println("Resumed."); //paused = false; } @Override public void resize(int width, int height) { camera.viewportWidth = GAME_WIDTH; camera.viewportHeight = GAME_HEIGHT; } public long getHighscore() { return gamePrefs.getLong("highscore", 0); } public void setHighscore(long highscore) { gamePrefs.putLong("highscore", highscore); highScore = highscore; gamePrefs.flush(); googleServices.submitClassicScore(highscore); } public long getZenHighscore() { return gamePrefs.getLong("zen-highscore", 0); } public void setZenHighscore(long highscore) { gamePrefs.putLong("zen-highscore", highscore); zenHighScore = highscore; gamePrefs.flush(); googleServices.submitZenScore(highscore); } @Override public void dispose() { batch.dispose(); assManager.dispose(); } public String secondsToTime(int insec, boolean includeHours) { int hours, minutes, seconds; String returned; hours = insec / 3600; minutes = (insec / 60) % 60; seconds = insec % 60; if(includeHours) returned = String.format("%02d", hours) + ":" + String.format("%02d", minutes) + ":" + String.format("%02d", seconds); else returned = String.format("%02d", minutes) + ":" + String.format("%02d", seconds); return returned; } }